package com.example.basic.web.mapper.pharmStock;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.basic.base.BaseEntityMapper;
import com.example.basic.web.model.pharmStock.PharmStock;
import com.example.basic.web.response.PharmStockResponse;
import com.example.basic.web.response.report.StockCountResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

/**
 * <p>
 * 系统操作日志表 Mapper 接口
 * </p>
 *
 */
@Mapper
public interface PharmStockMapper extends BaseEntityMapper<PharmStock> {

    /**
     *
     * 库存列表
     * @param queryPage  分页
     * @param searchParam 模糊搜索(遗体名称，拼音码，五笔码)
     * @param sex 性别 0-全部
     * @param pharmCode 库房编码 0-全部
     * @param zoneCode 分区编码 0-全部
     * @param depotCode 库位编码 0-全部
     * @param status 状态 0-全部 1-占用，2-空闲
     * @return
     */
    IPage<PharmStockResponse> queryList(Page<PharmStockResponse> queryPage,@Param("searchParam") String searchParam,
                                        @Param("sex") String sex, @Param("pharmCode") String pharmCode,
                                        @Param("zoneCode") String zoneCode, @Param("depotCode") String depotCode,
                                        @Param("status") String status);

    /**
     * 待出库列表
     * @param queryPage  分页
     * @param searchParam 模糊搜索(遗体名称，拼音码，五笔码)
     * @param sex 性别 0-全部
     * @param beginTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    IPage<PharmStockResponse> waitOutList(Page<PharmStockResponse> queryPage, @Param("searchParam") String searchParam,
                                          @Param("sex") String sex, @Param("beginTime") String beginTime,
                                          @Param("endTime") String endTime);

    /**
     * 库存信息查询
     * @param queryPage 分页
     * @param searchParam 模糊搜索(遗体名称，拼音码，五笔码)
     * @param pharmCode 库房编码 0-全部
     * @param zoneCode 分区编码 0-全部
     * @param depotCode 库位编码 0-全部
     * @return
     */
    IPage<StockCountResponse> queryStockInfo(Page<StockCountResponse> queryPage, @Param("searchParam") String searchParam,  @Param("pharmCode") String pharmCode,
                                         @Param("zoneCode") String zoneCode, @Param("depotCode") String depotCode);

    /**
     * 库存信息统计
     *
     * @param searchParam 模糊搜索(遗体名称，拼音码，五笔码)
     * @param pharmCode   仓库编码
     * @param zoneCode    分区编码
     * @param depotCode 库位编码
     * @return
     */
    Map stockCount(@Param("searchParam") String searchParam, @Param("pharmCode") String pharmCode, @Param("zoneCode") String zoneCode,@Param("depotCode") String depotCode);
}